package es.tikitaka.dao.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;

import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;

import es.tikitaka.dao.TipoSancionDicService;
import es.tikitaka.dictionary.TipoSancionDic;

/**
 * 
 * @author Saúl Domínguez
 * @since 2010
 * @category PFC
 */

@Name("tipoSancionService")
public class TipoSancionDicServiceImpl implements TipoSancionDicService {

	@In
	EntityManager em;

	/**
	 * Constructor por defecto
	 */
	public TipoSancionDicServiceImpl() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * Método para listar todos los tipos de sanciones almacenados en el sistema
	 * 
	 * @return lista de tipos de sanciones
	 */
	@SuppressWarnings("unchecked")
	public List<TipoSancionDic> getList() {
		List<TipoSancionDic> result = new ArrayList<TipoSancionDic>();
		result = em.createQuery("from TipoSancionDic order by tipo")
				.getResultList();
		return result;
	}

	/**
	 * Método para eliminar del sistema un tipo de sanción
	 * 
	 * @param id
	 *            Id del tipo de sanción a eliminar
	 * @return estado del proceso (true or false)
	 */
	public boolean delete(Integer id) {
		boolean correcto;
		try {
			TipoSancionDic tipo = em.getReference(TipoSancionDic.class, id);
			em.remove(tipo);
			em.flush();
			correcto = true;
		} catch (RuntimeException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			correcto = false;
		}
		return correcto;
	}

	/**
	 * Método para almacenar un tipo de sanción en el sistema o las
	 * modificaciones sufridas por un tipo de sanción existente
	 * 
	 * @param tipo
	 *            Tipo de sanción a almacenar
	 * @return estado del proceso (true or false)
	 */
	public boolean save(TipoSancionDic tipo) {
		boolean correcto;
		try {
			em.persist(tipo);
			em.flush();
			correcto = true;
		} catch (RuntimeException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			correcto = false;
		}
		return correcto;
	}
}
